package com.itheima._04认识泛型;

import java.util.ArrayList;

/**
 * @Description Demo041
 * @Author GreenHand_Lu
 * @Date 2025-07-19
 */
public class Demo041 {

    public static void main(String[] args) {
        //目标：操作没有使用泛型的ArrayList和使用泛型的ArrayList

        //没有使用泛型的ArrayList操作的是Object类型数据
        ArrayList arrayList = new ArrayList();
        arrayList.add(100);
        arrayList.add("abc");
        arrayList.add(true);
        //获取数据
        String str = (String) arrayList.get(1);//不使用泛型需要强转，强转可能带来异常

        //使用泛型的ArrayList,在编译阶段约束操作的类型数据
        ArrayList<String> arrayList2 = new ArrayList<>();
        // arrayList2.add(true); 约束必须是String否则报错
        arrayList2.add("abc");
        // arrayList2.add(100);

        //泛型作用：泛型提供了在编译阶段约束所能操作的数据类型，并自动进行检查的能力！
        // 这样可以避免强制类型转换，及其可能出现的异常。

        //泛型的本质：把具体的数据类型作为参数传给类型变量。
    }
}
